package com.ruoyi.epidemic.service;

import java.util.List;

import com.ruoyi.epidemic.domain.*;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 疫情防控信息收集Service接口
 *
 * @author ruoyi
 * @date 2022-04-04
 */
public interface IYqInfoCollectService
{
    /**
     * 查询疫情防控信息收集
     *
     * @param id 疫情防控信息收集主键
     * @return 疫情防控信息收集
     */
    public YqInfoCollect selectYqInfoCollectById(Long id);

    /**
     * 查询疫情防控信息收集列表
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 疫情防控信息收集集合
     */
    public List<YqInfoCollect> selectYqInfoCollectList(YqInfoCollect yqInfoCollect);


    /**
     * 查询疫情防控信息收集列表
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 疫情防控信息收集集合
     */
    public List<YqInfoCollect> selectYqInfoCollectListAduit(YqInfoCollect yqInfoCollect);

    /**
     * 新增疫情防控信息收集
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 结果
     */
    public int insertYqInfo(YqInfoCollect yqInfoCollect);

    /**
     * 新增疫情防控信息收集
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 结果
     */
    public int insertYqInfoCollect(YqInfoCollect yqInfoCollect,String userId);

    /**
     * 修改疫情防控信息收集
     *
     * @param yqInfoCollect 疫情防控信息收集
     * @return 结果
     */
    public int updateYqInfoCollect(YqInfoCollect yqInfoCollect);

    /**
     * 批量删除疫情防控信息收集
     *
     * @param ids 需要删除的疫情防控信息收集主键集合
     * @return 结果
     */
    public int deleteYqInfoCollectByIds(String ids);

    /**
     * 删除疫情防控信息收集信息
     *
     * @param id 疫情防控信息收集主键
     * @return 结果
     */
    public int deleteYqInfoCollectById(Long id);

    /**
     * 审核选中内容
     * @param ids
     * @return
     */
    int aduitYqInfoCollectByIds(String ids);

    /**
     * 审核所有查询内容
     * @param yqInfoCollect
     * @return
     */
    int aduitInfosAllSelect(YqInfoCollect yqInfoCollect);
    /**
     * 查询
     * @param belongDate
     * @return
     */
    public  Map<String,Integer> getLeaderview(String belongDate,Long deptId, String flag);

    /**
     * 查询
     * @param belongDate
     * @return
     */
    public  Map<String,Integer> getLeaderviewNew(String belongDate,Long deptId, String flag);

    List<DeptStaticData> getLeaderviewListByDeptIds(String belongDate, String flag, List<EpidemicControlDept> list);

    /**
     * 校验是否维护填报部门
     * @param userid
     * @return
     */
    public int checkDept(String userid);

    /**
     * 获取填报部门名称
     * @param userid
     * @return
     */
    public String getFillDept(String userid);


    /**
     * 校验审核权限
     */
    public List<Long> checkAduit(String userid);

    /**
     * 获取当前审批人所辖的（已审核、未审核的用户）当天数据
     * @param userId
     * @return
     */
    List<AuditUserDTO> getAuditUserList(String userId, String deptId, String date);

    /**
     * 获取当前审批人所辖的（已审核、未审核的用户ID）当天数据
     * @param userId
     * @return
     */
    List<String> getAuditUserIdList(String userId, String deptId, String date);

    /**
     * 获取当前审批人所管辖的所有用户
     * @param userId
     * @return
     */
    List<String> getUserIdListByDeptIds(String userId, String deptId);

    /**
     * 根据用户id列表获取所对应的用户信息列表
     * @param userIdList
     * @return
     */
    List<AuditUserDTO> getUnsubmitUserList(List<String> userIdList);

    /**
     * 根据用户userId获取用户疫情防控信息详情
     * @param userId
     * @return
     */
    YqInfoCollect getYqInfoCollectByUserId(String userId, String belongDate);

    /**
     * 根据collection表中的id获取审批人userId
     * @param
     * @return
     */
    List<String> getAuditUserByUserId(String userId);

    /**
     * 获取当前用户所管理的不么下的所有成员信息
     * @param userId
     * @return
     */
    List<AuditUserDTO> getUserInfoListByDeptIds(String userId, String deptId);

    /**
     * 从epidemic_user_dept_bash表中删除该成员
     * @param userId
     */
    int deleteEpidemicUserDeptBashByUserId(String userId);

    /**
     * 获取该用户所能够管理的所有部门信息
     * @param userId
     * @return
     */
    List<AuditUserDTO> getDeptListByUserId(String userId);

    /**
     * 根据部门id查询部门名称
     * @param deptId
     * @return
     */
    String selectDeptNameByDeptId(String deptId);

    /**
     * 获取当前新增用户的信息, 从epidemic_user_dept_bash表
     * @param userId
     * @return
     */
    AuditUserDTO selectUserInfoFromEpidemicUserDeptBash(String userId);

    /**
     * 从wx_cp_user中查询当前新增用户
     * @param curNewUserId
     * @return
     */
    AuditUserDTO selectUserInfoFromWxCpUser(String curNewUserId);


    /**
     * 根据部门id获取对应管理者的userId
     * @param deptId
     * @return
     */
    String selectManagerByDeptId(Long deptId);

    /**
     * 根据手机号和当天日期查询数据
     *  （未审核、审核通过的条件）
     * @param phonenumber
     * @param belongDate
     * @return
     */
    List<YqInfoCollect> selectYqInfoCollectByPhoneNumber(String phonenumber, String belongDate);

    /**
     * 从epidemic_user_dept表中查询当前用户所具有查看权限的一级管理部门
     * @param userId 用户id
     * @param selectPermissionType 数据权限类别
     * @return
     */
    List<DeptTreeViewItem> getUserDeptListByPermType(String userId, Integer selectPermissionType);

    /**
     * 查询当前系统中所有有效的管理部门数据
     * @return
     */
    List<DeptTreeViewItem> getAllDeptListFromControlDept();

    /**
     * 导出指定部门人员数据
     * @param deptId
     * @param dataType
     * @param response
     */
    void downExcelFile(Long deptId, String dataType,String belongDate, HttpServletResponse response);
}
